Type: concept
Confidence: 0.80
Created: 2026-04-16
Updated: 2026-04-16
Tags: 工具与框架

Semantic Tokens(语义标记)

概述

LSP 3.16 引入的语义标记机制,通过语言服务器分析代码语义而非仅依赖 TextMate 语法正则,为编辑器提供精确的语法高亮和语义分类信息。

关键内容

  1. Delta 编码格式服务端返回 5 个整数一组的数组 [deltaLine, deltaStartChar, length, tokenType, tokenModifiers]。deltaLine 和 deltaStartChar 相对于上一个 token 的位置,实现紧凑的增量编码。

  2. Token 类型:包括 namespace、type、class、function、method、property、parameter、variable、keyword 等标准类型,由 legend 定义。

  3. Token 修饰符:使用位掩码表示多个修饰符,如 declaration、definition、readonly、static、deprecated、abstract、async 等。

  4. 优势:相比 TextMate 语法(基于正则表达式的文本匹配),Semantic Tokens 能区分同名不同义的标识符(如局部变量 vs 全局变量、函数声明 vs 函数调用),提供更精确的着色。

  5. 客户端支持:Neovim、VS Code、Emacs 等主流编辑器均支持 Semantic Tokens 渲染。

来源

相关